package com.example.dbcms.mapper;

import com.example.dbcms.domain.Residents;
import io.swagger.models.auth.In;


import java.util.List;
import java.util.Map;

public interface ResidentDao {
    /**
     * 查询所有用户信息
     * @param residents 查询条件
     * @return
     */
    List<Residents> selectAllResidents(Residents residents);

    /**
     * 楼号房号条件查询用户信息
     *
     * @param mapCondition
     * @return
     */
    List<Residents> selectResidentsByCondition(Map<String, String> mapCondition);

    /**
     * 查询所有楼号
     *
     * @return
     */
    List<String> selectAllBuildingNo();

    /**
     * 查询所有房号
     *
     * @return
     */
    List<String> selectAllRoomNo();

    /**
     * 新增用户
     *
     * @return
     */
    int addUser(Residents residents);

    /**
     * 通过用户id删除用户
     *
     * @param id
     * @return
     */
    int deleteUserById(int id);

    /**
     * 通过用户信息更改用户数据
     *
     * @param residents
     * @return
     */
    int updateUser(Residents residents);

    /**
     * 普通用户修改数据
     * 只能修改用户名、性别、家庭人数、联系方式、工作单位
     * @param residents
     * @return
     */
    int updateUserByUser(Residents residents);

    /**
     * 通过id得到resident信息
     * @param id
     * @return
     */
    Residents getResidentById(int id);

    /**
     * 得到最大的id用来添加居民信息
     * @return
     */
    int getMaxId();

    /**
     * 通过list删除多条数据
     * @param ids
     * @return
     */
    int deleteMultipleResident(List<Integer> ids);

    /**
     * 查询相应位置居民id
     * @param buildingNo
     * @param roomNo
     * @return
     */
    int getResidentId(String buildingNo,String roomNo);

    /**
     * 得到相应居民id是一个列表
     * @param buildingNo
     * @param roomNo
     * @return
     */
    List<Integer> getResidentIdList(String buildingNo,String roomNo);

    /**
     * 查询最大的userId值
     * @return
     */
    int getMaxUserID();

    /**
     * 通过userid获得resident
     * @param userId
     * @return
     */
    Residents getResidentByUserId(int userId);

    /**
     * 通过房号楼号查询用户
     * @param buildingNo
     * @param roomNo
     * @return
     */
    Residents getResidentByBuildingNoAndRoomNo(String buildingNo,String roomNo);

    /**
     * 根据用户id修改基金余额
     * @param id 表记录id
     * @param balance  基金余额
     * @return
     */
    int updateBalance(int id,String balance);


}
